/*
 * Copyright (c) 2011 Intel Corporation. All Rights Reserved.
 * Copyright (c) Imagination Technologies Limited, UK
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sub license, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice (including the
 * next paragraph) shall be included in all copies or substantial portions
 * of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

#ifndef _REGCONV_H_topaz_vlc_regs_h
#define _REGCONV_H_topaz_vlc_regs_h

#ifdef __cplusplus 
#include "img_types.h"
#include "systemc_utils.h"
#endif 


/* Register CR_VLC_CONTROL */
#define TOPAZ_VLC_CR_VLC_CONTROL    0x0000
#define MASK_TOPAZ_VLC_CR_CODEC     0x00000003
#define SHIFT_TOPAZ_VLC_CR_CODEC    0
#define REGNUM_TOPAZ_VLC_CR_CODEC   0x0000
#define SIGNED_TOPAZ_VLC_CR_CODEC   0

#define MASK_TOPAZ_VLC_CR_SLICE_CODING_TYPE 0x0000000C
#define SHIFT_TOPAZ_VLC_CR_SLICE_CODING_TYPE 2
#define REGNUM_TOPAZ_VLC_CR_SLICE_CODING_TYPE 0x0000
#define SIGNED_TOPAZ_VLC_CR_SLICE_CODING_TYPE 0

#define MASK_TOPAZ_VLC_CR_START     0x00000010
#define SHIFT_TOPAZ_VLC_CR_START    4
#define REGNUM_TOPAZ_VLC_CR_START   0x0000
#define SIGNED_TOPAZ_VLC_CR_START   0

#define MASK_TOPAZ_VLC_CR_FLUSH     0x00000020
#define SHIFT_TOPAZ_VLC_CR_FLUSH    5
#define REGNUM_TOPAZ_VLC_CR_FLUSH   0x0000
#define SIGNED_TOPAZ_VLC_CR_FLUSH   0

#define MASK_TOPAZ_VLC_CR_FORCE_SKIP 0x00000040
#define SHIFT_TOPAZ_VLC_CR_FORCE_SKIP 6
#define REGNUM_TOPAZ_VLC_CR_FORCE_SKIP 0x0000
#define SIGNED_TOPAZ_VLC_CR_FORCE_SKIP 0

#define MASK_TOPAZ_VLC_CR_DISABLE_SKIP 0x00000080
#define SHIFT_TOPAZ_VLC_CR_DISABLE_SKIP 7
#define REGNUM_TOPAZ_VLC_CR_DISABLE_SKIP 0x0000
#define SIGNED_TOPAZ_VLC_CR_DISABLE_SKIP 0

#define MASK_TOPAZ_VLC_CR_CABAC_ENABLE 0x00000100
#define SHIFT_TOPAZ_VLC_CR_CABAC_ENABLE 8
#define REGNUM_TOPAZ_VLC_CR_CABAC_ENABLE 0x0000
#define SIGNED_TOPAZ_VLC_CR_CABAC_ENABLE 0

#define MASK_TOPAZ_VLC_CR_VLC_FIELD_CODED 0x00000200
#define SHIFT_TOPAZ_VLC_CR_VLC_FIELD_CODED 9
#define REGNUM_TOPAZ_VLC_CR_VLC_FIELD_CODED 0x0000
#define SIGNED_TOPAZ_VLC_CR_VLC_FIELD_CODED 0

#define MASK_TOPAZ_VLC_CR_VLC_8X8_TRANSFORM 0x00000400
#define SHIFT_TOPAZ_VLC_CR_VLC_8X8_TRANSFORM 10
#define REGNUM_TOPAZ_VLC_CR_VLC_8X8_TRANSFORM 0x0000
#define SIGNED_TOPAZ_VLC_CR_VLC_8X8_TRANSFORM 0

#define MASK_TOPAZ_VLC_CR_VLC_CONSTRAINED_INTRA 0x00000800
#define SHIFT_TOPAZ_VLC_CR_VLC_CONSTRAINED_INTRA 11
#define REGNUM_TOPAZ_VLC_CR_VLC_CONSTRAINED_INTRA 0x0000
#define SIGNED_TOPAZ_VLC_CR_VLC_CONSTRAINED_INTRA 0

#define MASK_TOPAZ_VLC_CR_VLC_SPATIAL_DIRECT 0x00001000
#define SHIFT_TOPAZ_VLC_CR_VLC_SPATIAL_DIRECT 12
#define REGNUM_TOPAZ_VLC_CR_VLC_SPATIAL_DIRECT 0x0000
#define SIGNED_TOPAZ_VLC_CR_VLC_SPATIAL_DIRECT 0

#define MASK_TOPAZ_VLC_CR_VLC_P_REF_IDX 0x00002000
#define SHIFT_TOPAZ_VLC_CR_VLC_P_REF_IDX 13
#define REGNUM_TOPAZ_VLC_CR_VLC_P_REF_IDX 0x0000
#define SIGNED_TOPAZ_VLC_CR_VLC_P_REF_IDX 0

#define MASK_TOPAZ_VLC_CR_DISCARD_CODED_DATA 0x00004000
#define SHIFT_TOPAZ_VLC_CR_DISCARD_CODED_DATA 14
#define REGNUM_TOPAZ_VLC_CR_DISCARD_CODED_DATA 0x0000
#define SIGNED_TOPAZ_VLC_CR_DISCARD_CODED_DATA 0

#define MASK_TOPAZ_VLC_CR_FIELD_SELECT 0x00008000
#define SHIFT_TOPAZ_VLC_CR_FIELD_SELECT 15
#define REGNUM_TOPAZ_VLC_CR_FIELD_SELECT 0x0000
#define SIGNED_TOPAZ_VLC_CR_FIELD_SELECT 0

#define MASK_TOPAZ_VLC_CR_CODEC_EXTEND 0x10000000
#define SHIFT_TOPAZ_VLC_CR_CODEC_EXTEND 28
#define REGNUM_TOPAZ_VLC_CR_CODEC_EXTEND 0x0000
#define SIGNED_TOPAZ_VLC_CR_CODEC_EXTEND 0

/* Register CR_VLC_STATUS */
#define TOPAZ_VLC_CR_VLC_STATUS     0x0004
#define MASK_TOPAZ_VLC_CR_BUSY      0x00000001
#define SHIFT_TOPAZ_VLC_CR_BUSY     0
#define REGNUM_TOPAZ_VLC_CR_BUSY    0x0004
#define SIGNED_TOPAZ_VLC_CR_BUSY    0

#define MASK_TOPAZ_VLC_CR_RECODE_AS_IPCM 0x00000004
#define SHIFT_TOPAZ_VLC_CR_RECODE_AS_IPCM 2
#define REGNUM_TOPAZ_VLC_CR_RECODE_AS_IPCM 0x0004
#define SIGNED_TOPAZ_VLC_CR_RECODE_AS_IPCM 0

/* Register CR_VLC_INFO_0 */
#define TOPAZ_VLC_CR_VLC_INFO_0     0x0008
#define MASK_TOPAZ_VLC_CR_FLUSH_STUFFING_BYTES 0x0003E000
#define SHIFT_TOPAZ_VLC_CR_FLUSH_STUFFING_BYTES 13
#define REGNUM_TOPAZ_VLC_CR_FLUSH_STUFFING_BYTES 0x0008
#define SIGNED_TOPAZ_VLC_CR_FLUSH_STUFFING_BYTES 0

/* Register CR_VLC_INFO_1 */
#define TOPAZ_VLC_CR_VLC_INFO_1     0x000C
#define MASK_TOPAZ_VLC_CR_SKIPPED_MBS_IN_FRAME 0x0000FFFF
#define SHIFT_TOPAZ_VLC_CR_SKIPPED_MBS_IN_FRAME 0
#define REGNUM_TOPAZ_VLC_CR_SKIPPED_MBS_IN_FRAME 0x000C
#define SIGNED_TOPAZ_VLC_CR_SKIPPED_MBS_IN_FRAME 0

#define MASK_TOPAZ_VLC_CR_CODED_MBS_IN_FRAME 0xFFFF0000
#define SHIFT_TOPAZ_VLC_CR_CODED_MBS_IN_FRAME 16
#define REGNUM_TOPAZ_VLC_CR_CODED_MBS_IN_FRAME 0x000C
#define SIGNED_TOPAZ_VLC_CR_CODED_MBS_IN_FRAME 0

/* Register CR_VLC_INFO_2 */
#define TOPAZ_VLC_CR_VLC_INFO_2     0x0010
#define MASK_TOPAZ_VLC_CR_INTRA_MBS_IN_FRAME 0x0000FFFF
#define SHIFT_TOPAZ_VLC_CR_INTRA_MBS_IN_FRAME 0
#define REGNUM_TOPAZ_VLC_CR_INTRA_MBS_IN_FRAME 0x0010
#define SIGNED_TOPAZ_VLC_CR_INTRA_MBS_IN_FRAME 0

#define MASK_TOPAZ_VLC_CR_INTER_MBS_IN_FRAME 0xFFFF0000
#define SHIFT_TOPAZ_VLC_CR_INTER_MBS_IN_FRAME 16
#define REGNUM_TOPAZ_VLC_CR_INTER_MBS_IN_FRAME 0x0010
#define SIGNED_TOPAZ_VLC_CR_INTER_MBS_IN_FRAME 0

/* Register CR_VLC_STUFF_HEAD_CTRL */
#define TOPAZ_VLC_CR_VLC_STUFF_HEAD_CTRL 0x0014
#define MASK_TOPAZ_VLC_CR_HEADER_ELEMENTS 0x0000001F
#define SHIFT_TOPAZ_VLC_CR_HEADER_ELEMENTS 0
#define REGNUM_TOPAZ_VLC_CR_HEADER_ELEMENTS 0x0014
#define SIGNED_TOPAZ_VLC_CR_HEADER_ELEMENTS 0

#define MASK_TOPAZ_VLC_CR_STUFFING_WORDS 0x00003FE0
#define SHIFT_TOPAZ_VLC_CR_STUFFING_WORDS 5
#define REGNUM_TOPAZ_VLC_CR_STUFFING_WORDS 0x0014
#define SIGNED_TOPAZ_VLC_CR_STUFFING_WORDS 0

#define MASK_TOPAZ_VLC_CR_CLEAR_HEADER_FIFO 0x80000000
#define SHIFT_TOPAZ_VLC_CR_CLEAR_HEADER_FIFO 31
#define REGNUM_TOPAZ_VLC_CR_CLEAR_HEADER_FIFO 0x0014
#define SIGNED_TOPAZ_VLC_CR_CLEAR_HEADER_FIFO 0

/* Register CR_VLC_HEADER_FIFO */
#define TOPAZ_VLC_CR_VLC_HEADER_FIFO 0x0018
#define MASK_TOPAZ_VLC_CR_HEADER_DATA 0xFFFFFFFF
#define SHIFT_TOPAZ_VLC_CR_HEADER_DATA 0
#define REGNUM_TOPAZ_VLC_CR_HEADER_DATA 0x0018
#define SIGNED_TOPAZ_VLC_CR_HEADER_DATA 0

/* Register CR_VLC_HEADER_CTRL */
#define TOPAZ_VLC_CR_VLC_HEADER_CTRL 0x001C
#define MASK_TOPAZ_VLC_CR_HEADER_PREFIX 0x7FFFFFFF
#define SHIFT_TOPAZ_VLC_CR_HEADER_PREFIX 0
#define REGNUM_TOPAZ_VLC_CR_HEADER_PREFIX 0x001C
#define SIGNED_TOPAZ_VLC_CR_HEADER_PREFIX 0

#define MASK_TOPAZ_VLC_CR_DISABLE_PREFIX_DETECTION 0x80000000
#define SHIFT_TOPAZ_VLC_CR_DISABLE_PREFIX_DETECTION 31
#define REGNUM_TOPAZ_VLC_CR_DISABLE_PREFIX_DETECTION 0x001C
#define SIGNED_TOPAZ_VLC_CR_DISABLE_PREFIX_DETECTION 0

/* Register CR_VLC_HEADER_STATUS */
#define TOPAZ_VLC_CR_VLC_HEADER_STATUS 0x0020
#define MASK_TOPAZ_VLC_CR_HEADER_FIFO_FULL 0x00000001
#define SHIFT_TOPAZ_VLC_CR_HEADER_FIFO_FULL 0
#define REGNUM_TOPAZ_VLC_CR_HEADER_FIFO_FULL 0x0020
#define SIGNED_TOPAZ_VLC_CR_HEADER_FIFO_FULL 0

/* Register CR_VLC_RATE_CTRL_MB_TYPE */
#define TOPAZ_VLC_CR_VLC_RATE_CTRL_MB_TYPE 0x0024
#define MASK_TOPAZ_VLC_CR_MB_CODING_TYPE_P 0x000000FF
#define SHIFT_TOPAZ_VLC_CR_MB_CODING_TYPE_P 0
#define REGNUM_TOPAZ_VLC_CR_MB_CODING_TYPE_P 0x0024
#define SIGNED_TOPAZ_VLC_CR_MB_CODING_TYPE_P 0

#define MASK_TOPAZ_VLC_CR_MB_CODING_TYPE_I 0x0000FF00
#define SHIFT_TOPAZ_VLC_CR_MB_CODING_TYPE_I 8
#define REGNUM_TOPAZ_VLC_CR_MB_CODING_TYPE_I 0x0024
#define SIGNED_TOPAZ_VLC_CR_MB_CODING_TYPE_I 0

#define MASK_TOPAZ_VLC_CR_MB_CODING_TYPE_B 0x00FF0000
#define SHIFT_TOPAZ_VLC_CR_MB_CODING_TYPE_B 16
#define REGNUM_TOPAZ_VLC_CR_MB_CODING_TYPE_B 0x0024
#define SIGNED_TOPAZ_VLC_CR_MB_CODING_TYPE_B 0

#define MASK_TOPAZ_VLC_CR_MB_CODING_TYPE_SKIP 0xFF000000
#define SHIFT_TOPAZ_VLC_CR_MB_CODING_TYPE_SKIP 24
#define REGNUM_TOPAZ_VLC_CR_MB_CODING_TYPE_SKIP 0x0024
#define SIGNED_TOPAZ_VLC_CR_MB_CODING_TYPE_SKIP 0

/* Register CR_VLC_RATE_CTRL_DCBITS */
#define TOPAZ_VLC_CR_VLC_RATE_CTRL_DCBITS 0x0028
#define MASK_TOPAZ_VLC_CR_DC_BITS   0x0000FFFF
#define SHIFT_TOPAZ_VLC_CR_DC_BITS  0
#define REGNUM_TOPAZ_VLC_CR_DC_BITS 0x0028
#define SIGNED_TOPAZ_VLC_CR_DC_BITS 0

#define MASK_TOPAZ_VLC_CR_MB_CODING_IPCM 0xFF000000
#define SHIFT_TOPAZ_VLC_CR_MB_CODING_IPCM 24
#define REGNUM_TOPAZ_VLC_CR_MB_CODING_IPCM 0x0028
#define SIGNED_TOPAZ_VLC_CR_MB_CODING_IPCM 0

/* Register CR_VLC_RATE_CTRL_MVBITS */
#define TOPAZ_VLC_CR_VLC_RATE_CTRL_MVBITS 0x002C
#define MASK_TOPAZ_VLC_CR_MV_BITS   0x00FFFFFF
#define SHIFT_TOPAZ_VLC_CR_MV_BITS  0
#define REGNUM_TOPAZ_VLC_CR_MV_BITS 0x002C
#define SIGNED_TOPAZ_VLC_CR_MV_BITS 0

/* Register CR_VLC_RATE_CTRL_MBSYM */
#define TOPAZ_VLC_CR_VLC_RATE_CTRL_MBSYM 0x0030
#define MASK_TOPAZ_VLC_CR_MB_SYMBOLS_BITS 0x00FFFFFF
#define SHIFT_TOPAZ_VLC_CR_MB_SYMBOLS_BITS 0
#define REGNUM_TOPAZ_VLC_CR_MB_SYMBOLS_BITS 0x0030
#define SIGNED_TOPAZ_VLC_CR_MB_SYMBOLS_BITS 0

/* Register CR_VLC_RATE_CTRL_MBRES */
#define TOPAZ_VLC_CR_VLC_RATE_CTRL_MBRES 0x0034
#define MASK_TOPAZ_VLC_CR_MB_RESIDUAL_BITS 0x00FFFFFF
#define SHIFT_TOPAZ_VLC_CR_MB_RESIDUAL_BITS 0
#define REGNUM_TOPAZ_VLC_CR_MB_RESIDUAL_BITS 0x0034
#define SIGNED_TOPAZ_VLC_CR_MB_RESIDUAL_BITS 0

/* Register CR_VLC_SIGNATURE_0 */
#define TOPAZ_VLC_CR_VLC_SIGNATURE_0 0x0038
#define MASK_TOPAZ_VLC_CR_MB_SIGNATURE 0xFFFFFFFF
#define SHIFT_TOPAZ_VLC_CR_MB_SIGNATURE 0
#define REGNUM_TOPAZ_VLC_CR_MB_SIGNATURE 0x0038
#define SIGNED_TOPAZ_VLC_CR_MB_SIGNATURE 0

/* Register CR_VLC_SIGNATURE_1 */
#define TOPAZ_VLC_CR_VLC_SIGNATURE_1 0x003C
#define MASK_TOPAZ_VLC_CR_BLK_SIGNATURE 0xFFFFFFFF
#define SHIFT_TOPAZ_VLC_CR_BLK_SIGNATURE 0
#define REGNUM_TOPAZ_VLC_CR_BLK_SIGNATURE 0x003C
#define SIGNED_TOPAZ_VLC_CR_BLK_SIGNATURE 0

/* Register CR_VLC_SIGNATURE_2 */
#define TOPAZ_VLC_CR_VLC_SIGNATURE_2 0x0040
#define MASK_TOPAZ_VLC_CR_LOOKUP_SIGNATURE 0xFFFFFFFF
#define SHIFT_TOPAZ_VLC_CR_LOOKUP_SIGNATURE 0
#define REGNUM_TOPAZ_VLC_CR_LOOKUP_SIGNATURE 0x0040
#define SIGNED_TOPAZ_VLC_CR_LOOKUP_SIGNATURE 0

/* Register CR_VLC_SIGNATURE_3 */
#define TOPAZ_VLC_CR_VLC_SIGNATURE_3 0x0044
#define MASK_TOPAZ_VLC_CR_BITSTREAM_SIGNATURE 0xFFFFFFFF
#define SHIFT_TOPAZ_VLC_CR_BITSTREAM_SIGNATURE 0
#define REGNUM_TOPAZ_VLC_CR_BITSTREAM_SIGNATURE 0x0044
#define SIGNED_TOPAZ_VLC_CR_BITSTREAM_SIGNATURE 0

/* Register CR_VLC_SIGNATURE_4 */
#define TOPAZ_VLC_CR_VLC_SIGNATURE_4 0x0048
#define MASK_TOPAZ_VLC_CR_HEADER_SIGNATURE 0xFFFFFFFF
#define SHIFT_TOPAZ_VLC_CR_HEADER_SIGNATURE 0
#define REGNUM_TOPAZ_VLC_CR_HEADER_SIGNATURE 0x0048
#define SIGNED_TOPAZ_VLC_CR_HEADER_SIGNATURE 0

/* Register CR_VLC_PERFORMANCE_0 */
#define TOPAZ_VLC_CR_VLC_PERFORMANCE_0 0x0050
#define MASK_TOPAZ_VLC_CR_WORST_MB_CYCLES 0x0000FFFF
#define SHIFT_TOPAZ_VLC_CR_WORST_MB_CYCLES 0
#define REGNUM_TOPAZ_VLC_CR_WORST_MB_CYCLES 0x0050
#define SIGNED_TOPAZ_VLC_CR_WORST_MB_CYCLES 0

#define MASK_TOPAZ_VLC_CR_WORST_MB_TYPE 0x00030000
#define SHIFT_TOPAZ_VLC_CR_WORST_MB_TYPE 16
#define REGNUM_TOPAZ_VLC_CR_WORST_MB_TYPE 0x0050
#define SIGNED_TOPAZ_VLC_CR_WORST_MB_TYPE 0

#define MASK_TOPAZ_VLC_CR_WORST_MB_IPCM 0x00040000
#define SHIFT_TOPAZ_VLC_CR_WORST_MB_IPCM 18
#define REGNUM_TOPAZ_VLC_CR_WORST_MB_IPCM 0x0050
#define SIGNED_TOPAZ_VLC_CR_WORST_MB_IPCM 0

/* Register CR_VLC_PERFORMANCE_1 */
#define TOPAZ_VLC_CR_VLC_PERFORMANCE_1 0x0054
#define MASK_TOPAZ_VLC_CR_WORST_MB_NUM 0x003FFFFF
#define SHIFT_TOPAZ_VLC_CR_WORST_MB_NUM 0
#define REGNUM_TOPAZ_VLC_CR_WORST_MB_NUM 0x0054
#define SIGNED_TOPAZ_VLC_CR_WORST_MB_NUM 0

/* Register CR_VLC_PERFORMANCE_2 */
#define TOPAZ_VLC_CR_VLC_PERFORMANCE_2 0x0058
#define MASK_TOPAZ_VLC_CR_WORST_MB_RESET 0x00000001
#define SHIFT_TOPAZ_VLC_CR_WORST_MB_RESET 0
#define REGNUM_TOPAZ_VLC_CR_WORST_MB_RESET 0x0058
#define SIGNED_TOPAZ_VLC_CR_WORST_MB_RESET 0

#define MASK_TOPAZ_VLC_CR_DISABLE_COUNTERS 0x00000002
#define SHIFT_TOPAZ_VLC_CR_DISABLE_COUNTERS 1
#define REGNUM_TOPAZ_VLC_CR_DISABLE_COUNTERS 0x0058
#define SIGNED_TOPAZ_VLC_CR_DISABLE_COUNTERS 0

/* Register CR_VLC_IPCM_0 */
#define TOPAZ_VLC_CR_VLC_IPCM_0     0x005C
#define MASK_TOPAZ_VLC_CR_CABAC_DB_MARGIN 0x03FF0000
#define SHIFT_TOPAZ_VLC_CR_CABAC_DB_MARGIN 16
#define REGNUM_TOPAZ_VLC_CR_CABAC_DB_MARGIN 0x005C
#define SIGNED_TOPAZ_VLC_CR_CABAC_DB_MARGIN 0

#define MASK_TOPAZ_VLC_CR_CABAC_BIN_FLEX 0x00001FFF
#define SHIFT_TOPAZ_VLC_CR_CABAC_BIN_FLEX 0
#define REGNUM_TOPAZ_VLC_CR_CABAC_BIN_FLEX 0x005C
#define SIGNED_TOPAZ_VLC_CR_CABAC_BIN_FLEX 0

/* Register CR_VLC_IPCM_1 */
#define TOPAZ_VLC_CR_VLC_IPCM_1     0x0060
#define MASK_TOPAZ_VLC_CR_IPCM_THRESHOLD 0x00000FFF
#define SHIFT_TOPAZ_VLC_CR_IPCM_THRESHOLD 0
#define REGNUM_TOPAZ_VLC_CR_IPCM_THRESHOLD 0x0060
#define SIGNED_TOPAZ_VLC_CR_IPCM_THRESHOLD 0

#define MASK_TOPAZ_VLC_CR_CABAC_BIN_LIMIT 0x1FFF0000
#define SHIFT_TOPAZ_VLC_CR_CABAC_BIN_LIMIT 16
#define REGNUM_TOPAZ_VLC_CR_CABAC_BIN_LIMIT 0x0060
#define SIGNED_TOPAZ_VLC_CR_CABAC_BIN_LIMIT 0

/* Register CR_VLC_MPEG4_CFG */
#define TOPAZ_VLC_CR_VLC_MPEG4_CFG  0x0064
#define MASK_TOPAZ_VLC_CR_RSIZE     0x00000007
#define SHIFT_TOPAZ_VLC_CR_RSIZE    0
#define REGNUM_TOPAZ_VLC_CR_RSIZE   0x0064
#define SIGNED_TOPAZ_VLC_CR_RSIZE   0

/* Register CR_VLC_MB_PARAMS */
#define TOPAZ_VLC_CR_VLC_MB_PARAMS  0x0068
#define MASK_TOPAZ_VLC_CR_QP        0x0000003F
#define SHIFT_TOPAZ_VLC_CR_QP       0
#define REGNUM_TOPAZ_VLC_CR_QP      0x0068
#define SIGNED_TOPAZ_VLC_CR_QP      0

#define MASK_TOPAZ_VLC_CR_QP_CB     0x003F0000
#define SHIFT_TOPAZ_VLC_CR_QP_CB    16
#define REGNUM_TOPAZ_VLC_CR_QP_CB   0x0068
#define SIGNED_TOPAZ_VLC_CR_QP_CB   0

#define MASK_TOPAZ_VLC_CR_QP_CR     0x3F000000
#define SHIFT_TOPAZ_VLC_CR_QP_CR    24
#define REGNUM_TOPAZ_VLC_CR_QP_CR   0x0068
#define SIGNED_TOPAZ_VLC_CR_QP_CR   0

/* Register CR_VLC_RESET */
#define TOPAZ_VLC_CR_VLC_RESET      0x006C
#define MASK_TOPAZ_VLC_CR_RESET     0x00000001
#define SHIFT_TOPAZ_VLC_CR_RESET    0
#define REGNUM_TOPAZ_VLC_CR_RESET   0x006C
#define SIGNED_TOPAZ_VLC_CR_RESET   0

/* Register CR_VLC_WRITE_ADDR */
#define TOPAZ_VLC_CR_VLC_WRITE_ADDR 0x0070
#define MASK_TOPAZ_VLC_CR_NEXT_WRITE_ADDR 0xFFFFFFF0
#define SHIFT_TOPAZ_VLC_CR_NEXT_WRITE_ADDR 4
#define REGNUM_TOPAZ_VLC_CR_NEXT_WRITE_ADDR 0x0070
#define SIGNED_TOPAZ_VLC_CR_NEXT_WRITE_ADDR 0

/* Register CR_VLC_CHROMA_QP_OFFSET */
#define TOPAZ_VLC_CR_VLC_CHROMA_QP_OFFSET 0x0074
#define MASK_TOPAZ_VLC_CR_QPCB_OFFSET 0x0000001F
#define SHIFT_TOPAZ_VLC_CR_QPCB_OFFSET 0
#define REGNUM_TOPAZ_VLC_CR_QPCB_OFFSET 0x0074
#define SIGNED_TOPAZ_VLC_CR_QPCB_OFFSET 0

#define MASK_TOPAZ_VLC_CR_QPCR_OFFSET 0x00001F00
#define SHIFT_TOPAZ_VLC_CR_QPCR_OFFSET 8
#define REGNUM_TOPAZ_VLC_CR_QPCR_OFFSET 0x0074
#define SIGNED_TOPAZ_VLC_CR_QPCR_OFFSET 0

/* Register CR_VLC_RATE_CTRL_QP */
#define TOPAZ_VLC_CR_VLC_RATE_CTRL_QP 0x0078
#define MASK_TOPAZ_VLC_CR_BU_QPY_INTRA 0x00003FFF
#define SHIFT_TOPAZ_VLC_CR_BU_QPY_INTRA 0
#define REGNUM_TOPAZ_VLC_CR_BU_QPY_INTRA 0x0078
#define SIGNED_TOPAZ_VLC_CR_BU_QPY_INTRA 0

#define MASK_TOPAZ_VLC_CR_BU_QPY_INTER 0x3FFF0000
#define SHIFT_TOPAZ_VLC_CR_BU_QPY_INTER 16
#define REGNUM_TOPAZ_VLC_CR_BU_QPY_INTER 0x0078
#define SIGNED_TOPAZ_VLC_CR_BU_QPY_INTER 0

/* Register CR_VLC_BU_STAT_UPDATE */
#define TOPAZ_VLC_CR_VLC_BU_STAT_UPDATE 0x007C
#define MASK_TOPAZ_VLC_CR_FORCE_BU_STAT_UPDATE 0x00000001
#define SHIFT_TOPAZ_VLC_CR_FORCE_BU_STAT_UPDATE 0
#define REGNUM_TOPAZ_VLC_CR_FORCE_BU_STAT_UPDATE 0x007C
#define SIGNED_TOPAZ_VLC_CR_FORCE_BU_STAT_UPDATE 0

/* Register CR_VLC_SLICE_HEADER_CTRL */
#define TOPAZ_VLC_CR_VLC_SLICE_HEADER_CTRL 0x0080
#define MASK_TOPAZ_VLC_CR_SLICE_HEADER_ELEMENTS 0x0000001F
#define SHIFT_TOPAZ_VLC_CR_SLICE_HEADER_ELEMENTS 0
#define REGNUM_TOPAZ_VLC_CR_SLICE_HEADER_ELEMENTS 0x0080
#define SIGNED_TOPAZ_VLC_CR_SLICE_HEADER_ELEMENTS 0

#define MASK_TOPAZ_VLC_CR_SLICE_PREFIX_ELEMENTS 0x00001F00
#define SHIFT_TOPAZ_VLC_CR_SLICE_PREFIX_ELEMENTS 8
#define REGNUM_TOPAZ_VLC_CR_SLICE_PREFIX_ELEMENTS 0x0080
#define SIGNED_TOPAZ_VLC_CR_SLICE_PREFIX_ELEMENTS 0

#define MASK_TOPAZ_VLC_CR_SLICE_MB_NUM 0x3FFF0000
#define SHIFT_TOPAZ_VLC_CR_SLICE_MB_NUM 16
#define REGNUM_TOPAZ_VLC_CR_SLICE_MB_NUM 0x0080
#define SIGNED_TOPAZ_VLC_CR_SLICE_MB_NUM 0

/* Register CR_VLC_SLICE_CTRL_0 */
#define TOPAZ_VLC_CR_VLC_SLICE_CTRL_0 0x0084
#define MASK_TOPAZ_VLC_CR_SLICE_SIZE_LIMIT 0x00FFFFFF
#define SHIFT_TOPAZ_VLC_CR_SLICE_SIZE_LIMIT 0
#define REGNUM_TOPAZ_VLC_CR_SLICE_SIZE_LIMIT 0x0084
#define SIGNED_TOPAZ_VLC_CR_SLICE_SIZE_LIMIT 0

/* Register CR_VLC_SLICE_CTRL_1 */
#define TOPAZ_VLC_CR_VLC_SLICE_CTRL_1 0x008C
#define MASK_TOPAZ_VLC_CR_SLICE_MBS_LIMIT 0x00003FFF
#define SHIFT_TOPAZ_VLC_CR_SLICE_MBS_LIMIT 0
#define REGNUM_TOPAZ_VLC_CR_SLICE_MBS_LIMIT 0x008C
#define SIGNED_TOPAZ_VLC_CR_SLICE_MBS_LIMIT 0

/* Register CR_VLC_RATE_CTRL_HEADERS */
#define TOPAZ_VLC_CR_VLC_RATE_CTRL_HEADERS 0x0090
#define MASK_TOPAZ_VLC_CR_SLICE_HEADER_BITS 0x00FFFFFF
#define SHIFT_TOPAZ_VLC_CR_SLICE_HEADER_BITS 0
#define REGNUM_TOPAZ_VLC_CR_SLICE_HEADER_BITS 0x0090
#define SIGNED_TOPAZ_VLC_CR_SLICE_HEADER_BITS 0

/* Register CR_VLC_SIGNATURE_5 */
#define TOPAZ_VLC_CR_VLC_SIGNATURE_5 0x0094
#define MASK_TOPAZ_VLC_CR_CABAC_SIGNATURE 0xFFFFFFFF
#define SHIFT_TOPAZ_VLC_CR_CABAC_SIGNATURE 0
#define REGNUM_TOPAZ_VLC_CR_CABAC_SIGNATURE 0x0094
#define SIGNED_TOPAZ_VLC_CR_CABAC_SIGNATURE 0

/* Register CR_VLC_SIGNATURE_6 */
#define TOPAZ_VLC_CR_VLC_SIGNATURE_6 0x0098
#define MASK_TOPAZ_VLC_CR_IPCM_SIGNATURE 0xFFFFFFFF
#define SHIFT_TOPAZ_VLC_CR_IPCM_SIGNATURE 0
#define REGNUM_TOPAZ_VLC_CR_IPCM_SIGNATURE 0x0098
#define SIGNED_TOPAZ_VLC_CR_IPCM_SIGNATURE 0

/*
	Byte range covering the group TOPAZ_VLC file
*/

#define TOPAZ_VLC_TOPAZ_VLC_REGISTERS_START		0x00000000
#define TOPAZ_VLC_TOPAZ_VLC_REGISTERS_END  		0x0000009B

/*
	Byte range covering the whole register file
*/

#define TOPAZ_VLC_REGISTERS_START		0x00000000
#define TOPAZ_VLC_REGISTERS_END  		0x0000009B
#define TOPAZ_VLC_REG_DEFAULT_TABLE struct {\
			IMG_UINT16 uRegOffset;\
			IMG_UINT32 uRegDefault;\
			IMG_UINT32 uRegMask;\
			bool bReadonly;\
			const char* pszName;\
		} TOPAZ_VLC_Defaults[] = {\
	{0x0000, 0x00000000, 0x1000FFFF, 0, "CR_VLC_CONTROL" } ,\
	{0x0004, 0x00000000, 0x00000005, 1, "CR_VLC_STATUS" } ,\
	{0x0008, 0x00000000, 0x0003E000, 1, "CR_VLC_INFO_0" } ,\
	{0x000C, 0x00000000, 0xFFFFFFFF, 0, "CR_VLC_INFO_1" } ,\
	{0x0010, 0x00000000, 0xFFFFFFFF, 0, "CR_VLC_INFO_2" } ,\
	{0x0014, 0x00000000, 0x80003FFF, 0, "CR_VLC_STUFF_HEAD_CTRL" } ,\
	{0x0018, 0x00000000, 0xFFFFFFFF, 0, "CR_VLC_HEADER_FIFO" } ,\
	{0x001C, 0x00000000, 0xFFFFFFFF, 0, "CR_VLC_HEADER_CTRL" } ,\
	{0x0020, 0x00000000, 0x00000001, 1, "CR_VLC_HEADER_STATUS" } ,\
	{0x0024, 0x00000000, 0xFFFFFFFF, 1, "CR_VLC_RATE_CTRL_MB_TYPE" } ,\
	{0x0028, 0x00000000, 0xFF00FFFF, 1, "CR_VLC_RATE_CTRL_DCBITS" } ,\
	{0x002C, 0x00000000, 0x00FFFFFF, 1, "CR_VLC_RATE_CTRL_MVBITS" } ,\
	{0x0030, 0x00000000, 0x00FFFFFF, 1, "CR_VLC_RATE_CTRL_MBSYM" } ,\
	{0x0034, 0x00000000, 0x00FFFFFF, 1, "CR_VLC_RATE_CTRL_MBRES" } ,\
	{0x0038, 0x00000000, 0xFFFFFFFF, 1, "CR_VLC_SIGNATURE_0" } ,\
	{0x003C, 0x00000000, 0xFFFFFFFF, 1, "CR_VLC_SIGNATURE_1" } ,\
	{0x0040, 0x00000000, 0xFFFFFFFF, 1, "CR_VLC_SIGNATURE_2" } ,\
	{0x0044, 0x00000000, 0xFFFFFFFF, 1, "CR_VLC_SIGNATURE_3" } ,\
	{0x0048, 0x00000000, 0xFFFFFFFF, 1, "CR_VLC_SIGNATURE_4" } ,\
	{0x0050, 0x00000000, 0x0007FFFF, 0, "CR_VLC_PERFORMANCE_0" } ,\
	{0x0054, 0x00000000, 0x003FFFFF, 0, "CR_VLC_PERFORMANCE_1" } ,\
	{0x0058, 0x00000000, 0x00000003, 0, "CR_VLC_PERFORMANCE_2" } ,\
	{0x005C, 0x01900000, 0x03FF1FFF, 0, "CR_VLC_IPCM_0" } ,\
	{0x0060, 0x00000000, 0x1FFF0FFF, 0, "CR_VLC_IPCM_1" } ,\
	{0x0064, 0x00000000, 0x00000007, 0, "CR_VLC_MPEG4_CFG" } ,\
	{0x0068, 0x00000000, 0x3F3F003F, 1, "CR_VLC_MB_PARAMS" } ,\
	{0x006C, 0x00000000, 0x00000001, 0, "CR_VLC_RESET" } ,\
	{0x0070, 0x00000000, 0xFFFFFFF0, 0, "CR_VLC_WRITE_ADDR" } ,\
	{0x0074, 0x00000000, 0x00001F1F, 0, "CR_VLC_CHROMA_QP_OFFSET" } ,\
	{0x0078, 0x00000000, 0x3FFF3FFF, 1, "CR_VLC_RATE_CTRL_QP" } ,\
	{0x007C, 0x00000000, 0x00000001, 0, "CR_VLC_BU_STAT_UPDATE" } ,\
	{0x0080, 0x00000000, 0x3FFF1F1F, 0, "CR_VLC_SLICE_HEADER_CTRL" } ,\
	{0x0084, 0x00000000, 0x00FFFFFF, 0, "CR_VLC_SLICE_CTRL_0" } ,\
	{0x008C, 0x00000000, 0x00003FFF, 0, "CR_VLC_SLICE_CTRL_1" } ,\
	{0x0090, 0x00000000, 0x00FFFFFF, 1, "CR_VLC_RATE_CTRL_HEADERS" } ,\
	{0x0094, 0x00000000, 0xFFFFFFFF, 1, "CR_VLC_SIGNATURE_5" } ,\
	{0x0098, 0x00000000, 0xFFFFFFFF, 1, "CR_VLC_SIGNATURE_6" } ,\
{ 0 }}

#define TOPAZ_VLC_REGS_INIT(uBase) \
	{ \
		int n;\
		TOPAZ_VLC_REG_DEFAULT_TABLE;\
		for (n = 0; n < sizeof(TOPAZ_VLC_Defaults)/ sizeof(TOPAZ_VLC_Defaults[0] ) -1; n++)\
		{\
			RegWriteNoTrap(TOPAZ_VLC_Defaults[n].uRegOffset + uBase, TOPAZ_VLC_Defaults[n].uRegDefault); \
		}\
	}
#endif
